/*
 * @lc app=leetcode.cn id=1030 lang=javascript
 *
 * [1030] 距离顺序排列矩阵单元格
 */

// @lc code=start
/**
 * @param {number} R
 * @param {number} C
 * @param {number} r0
 * @param {number} c0
 * @return {number[][]}
 */
var allCellsDistOrder = function (R, C, r0, c0) {
    let arr = [[r0, c0]]
    const visited = new Array(R);
    for (let i = 0; i < R; i++) {
        visited[i] = new Array(C).fill(false);
    }

    const q = [[r0, c0]];
    visited[r0][c0] = true;
    let res = []
    while (arr.length) {
        let [x, y] = arr.shift()
        res.push([x, y])
        if (x - 1 >= 0) {
            if (!visited[x-1][y]) { arr.push([x - 1, y]);  visited[x-1][y]=true}
        }
        if (x + 1 < R) {
            if (!visited[x+1][y]) { arr.push([x + 1, y]); visited[x+1][y]=true }
        }
        if (y + 1 < C) {
            if (!visited[x][y+1]) { arr.push([x, y + 1]);visited[x][y+1]=true }
        }
        if (y - 1 >= 0) {
            if (!visited[x][y-1]) { arr.push([x, y - 1]); visited[x][y-1]=true }
        }
    }
    return res
};//用set时一定注意`xy`不对因为6，66. 66 6算重复的
// @lc code=end

